package com.lfy.modules.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lfy.modules.blog.domain.dto.user.PwdDTO;
import com.lfy.modules.blog.domain.dto.user.UserDTO;
import com.lfy.modules.blog.domain.dto.user.ModifyFreezeUserDTO;
import com.lfy.modules.blog.domain.dto.user.ModifyUserRoleDTO;
import com.lfy.modules.blog.domain.vo.auth.UserListVO;
import com.lfy.modules.common.domain.PageResultVO;
import com.lfy.modules.common.domain.entity.UserEntity;
import com.lfy.modules.blog.domain.dto.LoginDTO;
import com.lfy.modules.blog.domain.vo.auth.LoginVO;
import com.lfy.modules.common.domain.R;

import javax.servlet.http.HttpServletResponse;

/**
* @author 吕飞扬
* @description 针对表【user】的数据库操作Service
* @createDate 2024-04-03 01:13:44
*/
public interface UserService extends IService<UserEntity> {

    R<LoginVO> login(LoginDTO loginDTO, HttpServletResponse response);

    /**
     * 动态路由权限
     * @return
     */
    R<?> getRoute(UserEntity entity);

    R<PageResultVO<UserListVO>> getUserList(Integer page, Integer size, String name);

    /**
     * 修改用户角色
     * @param dto d
     * @return r
     */
    R<Void> modifyUserRoleByUserId(ModifyUserRoleDTO dto);

    /**
     * 冻结用户
     * @param dto dto
     * @return r
     */
    R<Void> freezeUser(ModifyFreezeUserDTO dto);

    /**
     * 创建用户
     * @param dto dto
     * @return r
     */
    R<Void> createUser(UserDTO dto);

    /**
     * 修改用户信息
     * @param dto
     * @return
     */
    R<Void> modifyUser(UserDTO dto);

    /**
     * 修改密码
     * @param dto dto
     * @param userEntity userEntity
     * @return R
     */
    R<Void> modifyPassword(PwdDTO dto, UserEntity userEntity);

    /**
     * 删除用户
     * @param userId
     */
    R<Void> deleteUser(Long userId);
}
